This invention relates generally to processor-based systems and particularly to the ability to share a class between two applications or programs.
A class, in object-oriented programming, refers to a group of smaller objects. Each object is defined by its data and the operations that can be performed on its data. These operations are the object's interface.
It is common for two software programs running on the same computer system to communicate and share data. Modern operating systems provide various low-level mechanisms to support data sharing between applications running on the same computer. Unfortunately, these mechanisms generally involve procedure-based access to shared memory. Since a large percentage of modern software projects are developed using object-oriented programming languages and object-oriented paradigms, these operating system supported mechanisms may be awkward and complex to implement, test and maintain when applied with object-oriented programming languages.
On Windows operating systems, one solution is the component object model or COM. While COM provides an object-oriented way to communicate and share data across the boundaries of a program's address space, COM also involves substantial overhead. This overhead comes in the form of both a steep learning curve for developers and in the form of run-time overhead needed to install all the features COM publishes, whether or not the program actually uses those features. This has implications on the amount of resources a program uses, its performance, debug complexity, maintenance and modifiability.
Thus, there is a need for better ways to enable application programs to communicate and share data in an object-oriented fashion.